It really depends on your requirements for role management. I've seen an excellent basic role management system developed with a flat SQL table and a custom FIM workflow: just name the role and list all the permissions or provisioning instructions associated
with it in a row. You then just need a way to assign the various roles (and their permissions) to a user - some kind of attribute (job title, department, location etc) that is used as the basis of a SQL query. I've also designed and deployed systems with third
party tools (including BHOLD).
There are pros and cons to each approach, but it depends very much on what you are trying to achieve. If you need NIST-compliant RBAC and have already made the investment in FIM, then BHOLD seems a no-brainer (although has some implementation challenges).
If you need to auto-assign AD groups to users, then use FIM (possibly augmented with a SQL lookup). I've never heard of Grouper, so can't comment.
Omada was the other main RBAC solution for FIM, but it's been a while since I had hands-on with it, so don't know what the current functionality is.
Cheers,
Dave